/**
 * Created by 鄢鹏权 on 2017/04/08.
 */
// let index:any={};

class Config{
    /**
     * HTML 中的对象模式映射表
     * @type {{}}
     */
    static HTMLMap={};
    /**
     * 登录方法，绑定到index控制器的login方法上
     */
    static loginFn=function(){}
    static _before_menu=function (m:Menu.Item,id) {

    };
    static _after_menu=function (m:Menu.Item,id) {

    };
    /**
     *
     * @param {string} Obj
     * @param {string} Type
     * @param {string} Dir
     * @param {boolean} FromServer
     * @returns {string}
     */
    static getHTML=function (Obj:string,Type:string,Dir:string='',FromServer=true):string {
        if((Config.debug==false||window.location.protocol=='file:')&&typeof Config.HTMLMap[Dir] == 'object'&&typeof Config.HTMLMap[Dir][Obj] == 'object'&&typeof Config.HTMLMap[Dir][Obj][Type] == 'string'){
            return Config.HTMLMap[Dir][Obj][Type];
        }else{
            return '';
        }
    };
    /**
     * 设置HTML内容
     * @param {string} Obj
     * @param {string} Type
     * @param {string} HTML
     */
    static setHTML=function (Obj:string,Type:string,HTML:string,Dir:string=''):void {
        if(Config.HTMLMap[Dir] instanceof Object){

        }else{
            Config.HTMLMap[Dir]={};
        }if(Config.HTMLMap[Dir][Obj] instanceof Object){

        }else{
            Config.HTMLMap[Dir][Obj]={};
        }
        Config.HTMLMap[Dir][Obj][Type]=HTML;
    };
    /**
     * 退出登录方法
     */
    static logoutFn=function(){}
    static _initedVM=[];
    /**
     * 请求开始的回调，用于显示进度条
     */
    static requestStart=function(){}
    /**
     * 请求结束的回调
     */
    static requestEnd=function(){}
    static routerMap={};
    /**
     * 调试开关
     * @type {boolean}
     */
    static debug=false;
    static baseUrl='';
    /**
     * ajax服务器地址
     * @type {string}
     */
    static Host:string='';
    static needAuth:boolean=true;
    static authFailed:Function=function (menu:Menu.Item) {
        console.log(menu)
    };
    /**
     * ajax请求入口文件
     * @type {string}
     */
    static I:string='i';
    static Root:string='index.php';
    static DebugRoot:string='d.php';
    static RequestMethod='fetch';
    /**
     * 拼接生成ajax请求地址的回调函数
     * @param Obj
     * @param Way
     * @param Module
     * @returns {string}
     */
    static getRequestUrl=function (Obj:string,Way:string,Module:string=''):string {
        let req =[
            Obj,Way
        ];
        if(Module.length>0){
            req.unshift(Module)
        }
        return (window.location.protocol=='file:'?'http:':window.location.protocol)+'//'+Config.Host+'/'+(Config.debug===false?Config.Root:Config.DebugRoot)+'?'+Config.I+'='+req.join('/')+(Config.debug===false?'':"&XDEBUG_SESSION_START=12522");
    };
    /**
     * 定义vm的加载目录
     * @type {string}
     */
    static VMDir:string='vm/';
    /**
     * 定义vm模板文件的加载地址
     * @type {string}
     */
    static TPLDir:string='vm/';
    /**
     * 当前的导航数据
     * @type {{n: string; e: string; p: string; params: string}}
     */
    static currentNav:Object={
        n:"",
        e:"",
        p:"",
        params:""
    };
    static loaded:string[]=[];
    static index:string='';
    static PageParams={};

    /**
     * 加载完成时的触发函数
     */
    static ready(){

    }

    /**
     * 路由失败回调
     */
    static routerError(){

    }

    /**
     * 路由成功回调
     */
    static routerSuccess(){

    }

    /**
     * 加载失败回调
     * @param Obj
     * @param Type
     */
    static loadError(Obj,Type){

    }

    /**
     * 加载成功回调
     */
    static loadSuccess(){

    }

    /**
     * 模板加载成功回调
     * @param tpl
     */
    static loadTplError(tpl){}

    /**
     * 模板加载成功回调
     * @param tpl
     */
    static loadTplSuccess(tpl){}
    static login(){}
    static logout(){}
}